package com.atguigu.gmall.pms.api;

import com.atguigu.core.bean.PageVo;
import com.atguigu.core.bean.QueryCondition;
import com.atguigu.core.bean.Resp;
import com.atguigu.gmall.pms.entity.*;
import com.atguigu.gmall.pms.vo.CategoryEntityVO;
import com.atguigu.gmall.pms.vo.ItemGroupVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import java.util.List;

public interface GmallPmsApi {


    /**
     * 购物车需求
     * @param skuId
     * @return
     */
    @GetMapping("pms/skusaleattrvalue/sku/{skuId}")
    public Resp<List<SkuSaleAttrValueEntity>> querySkuSaleAttrValueBySkuId(@PathVariable("skuId")Long skuId);
    /**
     * 商品详情，查询分组下的属性值，注意，调用service即可，剩下的交给业务层处理
     * @param cid
     * @param spuId
     * @return
     */
    @GetMapping("pms/attrgroup/item/group/{cid}/{spuId}")
    public Resp<List<ItemGroupVO>> queryItemGroupVOByCidAndSpuId(@PathVariable("cid") Long cid, @PathVariable("spuId") Long spuId);
    /**
     * 商品详情，根据spuID查询海报
     * @param spuId
     * @return
     */
    @GetMapping("pms/spuinfodesc/info/{spuId}")
    public Resp<SpuInfoDescEntity> querySpuDescBySpuId(@PathVariable("spuId") Long spuId);
    /**
     * 商品详情，根据spuid查询所有的销售属性
     * @param spuId
     * @return
     */
    @GetMapping("pms/skusaleattrvalue/{spuId}")
    public Resp<List<SkuSaleAttrValueEntity>> querySkuSaleAttrValueBySpuId(@PathVariable("spuId") Long spuId);
    /**
     * 商品详情，更具skuID查询图片集信息
     * @param skuId
     * @return
     */
    @GetMapping("pms/skuimages/{skuId}")
    public Resp<List<SkuImagesEntity>> querySkuImagesBySkuId(@PathVariable("skuId") Long skuId);
    /**
     * 商品详情，根据skuID，查询sku信息
     * @param skuId
     * @return
     */
    @GetMapping("pms/skuinfo/info/{skuId}")
    public Resp<SkuInfoEntity> querySkuBySkuId(@PathVariable("skuId") Long skuId);
    /**
     * 门户网站查询二三级分类
     * @param pid
     * @return
     */
    @GetMapping("pms/category/{pid}")
    public Resp<List<CategoryEntityVO>> querySubCategory(@PathVariable("pid")Long pid);
    /**
     * 门户网站查询左侧分类的接口
     * @param level
     * @param parentCid
     * @return
     */
    //@RequestBody是接收json数据，@RrrequestParam是接收普通数据
    @GetMapping("pms/category")
    public Resp<List<CategoryEntity>> queryCategoriesByPidOrLevel(@RequestParam(value = "level",defaultValue = "0") Integer level,
                                                    @RequestParam(value = "parentCid",required = false) Long parentCid);
    //消息时使用，更具id查询spu的信息
    @GetMapping("pms/spuinfo/info/{id}")
    public Resp<SpuInfoEntity> querySpuById(@PathVariable("id") Long id);
    /**
     * 分页查询已上架的SPU信息
     * @param queryCondition
     * @return
     */
//    @GetMapping("pms/spuinfo/list")
//    public Resp<PageVo> list(QueryCondition queryCondition);

    @PostMapping("pms/spuinfo/page")
    public Resp<List<SpuInfoEntity>> querySpuByPage(@RequestBody QueryCondition queryCondition);
    /**
     * 根据SpuId查询对应的SKU信息（接口已写好
     * @param spuId
     * @return
     */
    @GetMapping("pms/skuinfo/{spuId}")
    public Resp<List<SkuInfoEntity>> querySkuBySpuId(@PathVariable("spuId")Long spuId);


    /**
     * 根据品牌id查询品牌（逆向工程已自动生成）
     * @param brandId
     * @return
     */
    @GetMapping("pms/brand/info/{brandId}")
    public Resp<BrandEntity> queryBrandById(@PathVariable("brandId") Long brandId);

    /**
     * 根据分类id查询商品分类（逆向工程已自动生成）
     * @param catId
     * @return
     */
    @GetMapping("pms/category/info/{catId}")
    public Resp<CategoryEntity> queryCategoryById(@PathVariable("catId") Long catId);


    /**
     * 根据spuId查询检索规格参数及值
     */
    @GetMapping("pms/productattrvalue/{spuId}")
    public Resp<List<ProductAttrValueEntity>> querySearchAttrValueBySpuId(@PathVariable("spuId") Long spuId);
    /**
     * 根据skuid查询库存（gmall-wms中接口已写好）
     */
}
